import CryptoJS from './crypto-js'
// 加密方法
export function Encrypt(word, key) {
  const srcs = CryptoJS.enc.Utf8.parse(word)

  key = CryptoJS.enc.Utf8.parse(key) // 十六位十六进制数作为密钥
  var iv = CryptoJS.enc.Utf8.parse('ygkt.01j2edlu.9w')

  const encrypted = CryptoJS.AES.encrypt(srcs, key, {
    iv: iv,
    mode: CryptoJS.mode.CBC, // CBC模式
    padding: CryptoJS.pad.Pkcs7
    // padding: "AES/CBC/PACS5Padding",
  })
  var result = CryptoJS.enc.Base64.stringify(encrypted.ciphertext)
  return result
}

// 解密方法
export function Decrypt(word, key) {
  key = CryptoJS.enc.Utf8.parse(key) // 十六位十六进制数作为密钥
  var iv = CryptoJS.enc.Utf8.parse('ygkt.01j2edlu.9w')

  // const base64 = CryptoJS.enc.Base64.parse(word)
  // const srcs = CryptoJS.enc.Base64.stringify(base64)

  const decrypt = CryptoJS.AES.decrypt(word, key, {
    iv: iv,
    mode: CryptoJS.mode.CBC, // CBC模式
    // padding: "AES/CBC/PACS5Padding",
    padding: CryptoJS.pad.Pkcs7
  })

  const decryptedStr = decrypt.toString(CryptoJS.enc.Utf8)
  return decryptedStr.toString()
}

function randomString(len) {
  len = len || 32 // 给len赋值为函数的参数，要是没有参数或者参数为0赋值为32
  var chars = 'ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678'
  var maxPos = chars.length // 获 取 chars.length; //获取chars.length;//获取char的长度
  var pwd = '' // 初始化密码
  for (var i = 0; i < len; i++) {
    // Math.random()取值范围是（0，1）*maxPos取值范围是（0，maxPos的长度）Math.floor()函数是下取整，处理后取值范围为[0, maxPos-1],charAt()获取字符串该位置的值
    pwd += chars.charAt(Math.floor(Math.random() * maxPos))
  }
  return pwd// 返回得到的字符串
}

export default {
  Encrypt, Decrypt, randomString
}

// randomString(16)